System and method for generating histograms

ABSTRACT

A method for constructing histograms may include receiving a set of data values, wherein the data values are two-dimensional or three-dimensional and the data values contain at least one measurement over time; creating a plurality of bins in memory, wherein the plurality of bins are log-linear bins using 2 significant digits base 10; creating a zero bin representing the number 0; placing non-zero numbers of the set of data values into the plurality of bins; and generating one or more histograms using the bins.

FIELD OF INVENTION

The present invention relates to efficient storing and displaying oftime-series histogram data.

BACKGROUND OF THE INVENTION

A histogram is a graphical representation of data samples. Inconventional settings, however, storing and retrieving time-serieshistograms may be inefficient. For example, when current systemsretrieve time-series histograms, the histogram information stored in thesystem will often exceed the visual space needed to visualize the data.The data may exceed visual space over the time (x) axis, over the bin(y) axis, or both. Accordingly, efficient techniques are needed forstoring and retrieving time-series histogram data.

SUMMARY

Embodiments of the invention may include a system, method, and/orcomputer-readable medium. In one embodiment, a method may exist forconstructing histograms may comprise: receiving, by one or moreprocessors, a set of data values, wherein the data values aretwo-dimensional or three-dimensional and the data values contain atleast one measurement over time; creating, by the one or moreprocessors, a plurality of bins in memory, wherein the plurality of binsare log-linear bins using 2 significant digits base 10; creating, by theone or more processors, a zero bin representing the number 0; placing,by the one or more processors, non-zero numbers of the set of datavalues into the plurality of bins; and generating, by the one or moreprocessors, one or more histograms using the bins.

In another embodiment, a non-transitory computer-readable medium mayexist comprising instructions, which when executed by one or moreprocessors causes the one or more processors to perform operations forconstructing histograms, the computer-readable medium comprisinginstructions to: receive a set of data values, wherein the data valuesare two-dimensional or three-dimensional and the data values contain atleast one measurement over time; create a plurality of bins in memory,wherein the plurality of bins are log-linear bins using 2 significantdigits base 10; create a zero bin representing the number 0; placenon-zero numbers of the set of data values into the plurality of bins;and generate one or more histograms using the bins.

In yet another embodiment, a system for constructing histograms mayexist comprising: one or more processors for executing a plurality ofinstructions; a display device in communication with the one or moreprocessors; and a storage device in communication with the one or moreprocessors, the storage device holding the plurality of instructions,the plurality of instructions including instructions to: receive a setof data values, wherein the data values are two-dimensional orthree-dimensional and the data values contain at least one measurementover time; create a plurality of bins in memory, wherein the pluralityof bins are log-linear bins using 2 significant digits base 10; create azero bin representing the number 0; place non-zero numbers of the set ofdata values into the plurality of bins; generate one or more histogramsusing the bins; and display the one or more histograms via the displaydevice.

BRIEF DESCRIPTION OF THE DRAWINGS

The foregoing and other features and advantages of the invention will beapparent from the following, more particular description of variousembodiments, as illustrated in the accompanying drawings wherein likereference numbers generally indicate identical, functionally similar,and/or structurally similar elements. The first digits in the referencenumber indicate the drawing in which an element first appears. Unlessotherwise indicated, the accompanying drawing figures are not to scale.

FIG. 1 depicts a sample histogram of eleven units;

FIG. 2 depicts a sample time-series, with the measurement value on they-axis and a time of measurement on the x-axis;

FIG. 3A-3D depict histograms using color density;

FIG. 4 depicts side-by-side vertical histograms representingmeasurements over time;

FIG. 5 depicts example fixed bin sizes;

FIG. 6 depicts an example of multiple bin aggregation;

FIG. 7 depicts an example flowchart describing processing performed inan illustrative embodiment of the present invention; and

FIG. 8 depicts an example computer processing system that may be used inimplementing an embodiment of the present invention.

DETAILED DESCRIPTION

Illustrative embodiments are discussed in detail below. While specificembodiments are discussed, it should be understood that this is done forillustration purposes only. In describing and illustrating theembodiments, specific terminology is employed for the sake of clarity.However, the embodiments are not intended to be limited to the specificterminology so selected. A person skilled in the relevant art willrecognize that other components and configurations may be used withoutdeparting from the spirit and scope of the embodiments. It is to beunderstood that each specific element includes all technical equivalentsthat operate in a similar manner to accomplish a similar purpose. Theexamples and embodiments described herein are non-limiting examples.

Furthermore, the embodiments detailed below may be combined into a newembodiment and/or various features of the embodiments described belowmay be combined to form a new embodiment.

All publications cited herein are hereby incorporated by reference intheir entirety. As used herein, the term “a” refers to one or more. Theterms “including,” “for example,” “such as,” “e.g.,” “may be” and thelike, are meant to include, but not be limited to, the listed examples.

FIG. 1 depicts a sample histogram of eleven units or bins. A histogramis a dense representation of data samples where samples themselves maybe grouped together (losing accuracy). For example, given a set ofnumbers 0.5, 0.7, 2.0, 2.9, 7 and 9.2, one may divide the space from 0to 10 into units of 1. The histogram of FIG. 1 depicts 11 “bins” of size1: [0,1), [1,2), [2,3), [3,4), [4,5), [5,6), [6,7), [7,8), [8,9), and[9,10). The number and size of the bins may change. There are twonumbers in each of [0,1) and [2,3), and one number in each of [7,8) and[9,10) as shown in FIG. 1.

FIG. 2 depicts a sample time-series, with a measurement on the y-axisand a time the measurement was taken on the x-axis. A time series is aset of measurements over time. In this example, it is measured how longa specific action took (e.g. loading a web page) every minute for 30minutes. A common visual representation (line graph) would be to placethe measurement on the y-axis and the time on the x-axis as shown inFIG. 2.

Histograms may also display three dimensions of data in a twodimensional view. For example, time may be the x-axis, a measurementvalue may be the y-axis, and a third dimensions may be represented usingcolor density.

FIG. 3A depicts a histogram using color density to represent values.There are eighteen bins along the axis. The frequency the values appearin the bins is along with y-axis. Large populations in a given binresult in a more dense (e.g., darker) color representation.

FIG. 3B depicts another histogram using color density to representvalues. FIG. 3B depicts an example of a histogram using color density torepresent values without using bar height. Thus, the frequency isremoved from the y-axis. Population can be understood based on colordensity without explicit bar height.

FIG. 3C depicts the histogram of FIG. 3B where height is reduced tocompress space.

FIG. 3D depicts the reduced height histogram of FIG. 3C rotatedcounter-clockwise 90 degrees as a “vertical histogram.”

FIG. 4 depicts side-by-side vertical histograms representingmeasurements over time. For example, once the vertical color-densitytransformation of FIGS. 3A-3D is applied to a histogram, many verticalhistograms over time may be represented by placing them side-by-side anda large amount of data may be visually displayed in a limited space.This may be one technique to visually display a large amount of data ina limited space.

In conventional settings, storing and retrieving (e.g., forvisualization) time-series histograms may be inefficient. For example,when retrieving time-series histograms the histogram information storedin the system often exceeds the visual space available to visualize thedata. The data may exceed the visual space over the time (x) axis or itmay exceed the visual space over the bin (y) axis, or both.

For example, if histograms are stored on a one minute basis, over a twoyear period more than one million histograms will be stored. In alimited visual space, such as a computer monitor or other display, whereonly some small number of time-series histograms can be displayed,aggregation of the one-minute histograms into a larger time interval forvisualization may be required. Assuming, for example, the visual spacecan display 1,500 vertical histograms. Then, groups of 720 one-minutehistograms may be aggregated into a single 12-hour-histogram. The numberof 12-hour-histograms over 2 years is approximately 1,460 which may fitwithin the designated visual space. Accordingly, some of the data is notrequired for visualization and transmitting and reducing histograms thatcannot be discerned when visualized is inefficient.

In another example, a data set may have measurements that are very smalland very big such that differentiating small values in a visualizationis not possible (e.g., measurements 1,000,000, 900,000, 0.1, and 0.13).Given limited visual space, a linear representation of values, 0.1 and0.13 may be represented too close visually to be discerned. Accordingly,the difference between the 0.1 and 0.13 values may be indistinguishableas opposed to the difference between 1,000,000 and 900,000. Transmittingbins uniquely that cannot be discerned when visualized may beinefficient.

Time-Realm Efficiency

Previously, data being collected was analyzed to optimize for errorreduction and clean visualization of a single histogram and not a seriesof histograms over time. Accordingly, previous approaches lacked aconsistent approach to binning. Consistency in binning was not requiredas histograms were not aggregated into larger time units.

However, in one embodiment, time-realm efficiency may be achieved. Binselection may be the same to allow, for example, aggregating twohistograms. Accordingly, bin measurements may maintain (1) a fixed sizebin description, (2) a universal compatibility regardless of measurementmagnitude while maintaining a satisfactory and useful level ofprecision, and (3) an ability to aggregate while controlling bin space.

A fixed size bin description may be accomplished by sizing the bin[begin, end) into a fixed bit-width (e.g., 16 bits) representation. Thefixed-bit width may, for example, allow for more efficient key lookup.The bin size may be fixed (e.g., two significant digits base 10)regardless of the data values. This creates a uniform bin scheme thatmay be used, for example, across different data streams and keeps thesame key space. In one embodiment, a fixed keyspace may be provided. Thefixed keyspace is above and beyond fixed bins and may be a limitation tothe number of total bins. The fixed key space may represent bucketsbetween 1.0×10{circumflex over ( )}−127 and 9.9×10{circumflex over( )}128, 0, and between −1.0×10{circumflex over ( )}−127 and−9.9×10{circumflex over ( )}128 and thereby limits the keys representinto 16 bits.

The fixed keyspace allows for aggregating, for example, the 720one-minute histograms into a single 12-hour histogram both (1)efficiently and (2) in a fashion that tracks error consistently.Histogram may be aggregated more efficiently because the keyspacesbetween the histograms are identical. For example, two histograms may besimply be added together (e.g., bin by bin). If the keyspaces weredifferent, mathematical conversions would be required and the effects onerror would be even more complicated. Additionally, the uniform binningacross various data streams also provides for highly compressiblehistograms. For example, restricted use of keyspace leads to bettercompression.

Combining histograms with different bin selections may be an issuebecause different bin selections that overlap but are not equal havedifferent error introduced when samples are placed within them.Previously, when a new aggregate bin was created, a technique to re-binthe samples using some selected distribution assumption must beperformed. The technique may not be possible if the bins are eitherreally large (e.g., not useful) or they are small but samples can beentirely misplaced (e.g., the possible error would exceed the binitself).

In one embodiment, universal compatibility regardless of measurementmagnitude while maintaining a satisfactory and useful level of precisionmay be accomplished through the following. First, the number zero may betreated as an exact bin (e.g., all measurements that equal zero). A binzero may be defined as containing all measurements that share equalitywith the value zero. Non-zero numbers may be represented in bins thatare bounded numbers with two significant digits in base ten. This hascharacteristics of representing numbers of wide magnitude space (i.e.,10{circumflex over ( )}−128 to 10{circumflex over ( )}127)logarithmically, while maintaining a linear granularity within each binset aiding human understanding and visualization (e.g., a large set ofbins such as, [1.0, 1.1), [1.1, 1.2), . . . [9.9,10) collectively times10{circumflex over ( )}n). Bins may be log-linear bins using 2significant digits base 10, and, therefore, the maximal error is 5% andthe average error is approximately 0.65%. As the base or significantdigits changes, the error would change as well.

Bins may be from one point on a discrete number line to the next, with aclosed interval on the point closest to zero and an open interval on thenumber furthest from zero (e.g. [1.7,1.8) and [−3400,−3500) and[8.2×10{circumflex over ( )}14,8.3×10{circumflex over ( )}14)). When twobins touch (e.g., two adjacent bins), for example, [1.0,1.1) and[1.1,1.2) the bins cannot both represent 1.1 (e.g., no overlap). If bothbins were closed, both would represent the point where they touch. Ifboth bins were open, neither would represent the point where they touch.Accordingly, one bin must be open and one bin must be closed. Aconvention is needed to determine which bin the value of 1.1 would gointo. So, closed-interval includes the point, open does not.Accordingly, in one embodiment, the point closest to zero is closed. InMathsquare, for example, brackets [] indicate closed (including) andparenthesis ( ) indicate open (excluding).

FIG. 5 depicts a bin selection using two significant digits in base 10and illustrates how the bottom 10% of each exponent range is actuallyrepresented by the adjacent smaller exponent. Additionally, the lastexponent bin range in the figure depicts 0 as a special value whereinsmaller measurements cannot be accounted for. This is a log-linear binselection from 1.0×10{circumflex over ( )}−127 to 9.9×10{circumflex over( )}128.

Given discrete representation, selected histograms may be aggregatedwithout arbitrarily expanding the bin space, which may provide anability to aggregate (e.g., via addition and subtraction) whilecontrolling bin space. This may have the distinct real-world advantageof a highly controlled bin space for a physical system (e.g., a systemhaving prescribed constraints). FIG. 6 depicts an example of multiplebin aggregation. For example, histograms in (a) added with histograms in(b) equals the histograms in (c).

Techniques shown below calculate and store (e.g., time) aggregatedhistogram data to decrease required information access on retrieval.

In one embodiment, the display may communicate the number of histogramsdesired and the storage system may dynamically aggregate requested datainto lengthier periods of time. For example, displaying a two-yearhistogram time series where all histograms are stored by minute wouldrequire 1,051,200 histograms returned to the visualization system.Instead, for example, the display may request 1,000 histograms, whichmay result in the storage systems combining 720 one-minute histogramsinclusively between [00:00 and 11:59] into one 12-hour histogram and the720 one-minute histograms inclusively between [12:00 and 23:59] into one12-hour histogram for each day of the two years resulting in 1,460histograms to the visualization system instead of 1,051,200 withconventional techniques. This new representation presents a waste of 46%as opposed to a waste of 105000% with conventional techniques.

In one embodiment, the display may understand horizontal resolution anddetermine how many pixels are available for rendering verticalhistograms. This “horizontal viewport size” may be the number ofhistograms requested (e.g., a number equal to or less than the number ofhorizontal pixels). The histogram delivery technique may attempt toaggregate the number of bins to a level where the number of histogramsreturned for the requested time range roughly approximates but is lessthan the “horizontal viewport size” (e.g., within a factor of 4 to beroughly approximate).

In one embodiment, to determine the number of bins requested, availablevisual space may be pulled or requested from the display itself throughvarious techniques. In a web browser, for example, the number ofhorizontal and vertical pixels available in the viewport may beaccessible by calling a Javascript routine.

In one embodiment, the number of histograms may be less than the numberof horizontal pixels, as any number greater may be lost duringvisualization. The number of bins desired may be less than the number ofvertical pixels, as any number greater may be lost during visualization.

In one embodiment, the number of histograms is roughly half the numberof horizontal pixels. For example, with 1000 pixels of horizontal space,roughly 500 histograms may be created. And, with 600 pixels of verticalspace, 300 bins may be used.

In one embodiment, fine granularity histograms may be automaticallyaggregated into successively wider granularity histograms to acceleratevisualization of data over arbitrary periods of time (e.g., storing 1minute, 5 minute, 1 hour, and 12 hour aggregations). For example, eachtime a one-minute histogram is stored, the containing five-minutehistogram is recalculated and stored, causing the containing one-hourhistogram to be recalculated and stored, causing the containing 12-hourhistogram to be recalculated and stored, etc. Accordingly, histogramdata is pre-calculated as data is received. The largest feasiblepre-calculated histogram accumulates is selected above. A user mayprovide the largest feasible pre-calculated histogram based on how oftenthe user believes they would be used. For example, a user may providethe largest feasible pre-calculated histogram based on how long theybelieve they will retain data and how frequently long time periods willbe visualized.

Bin-Realm Efficiency

Another advantage of the techniques described herein is an ability torepresent histograms in a smaller information footprint based on thevisualization parameters.

Human beings often interpret logarithmically scaled data incorrectly andtend to operate more effectively with linearly scaled data. Given a widemagnitude space and a linear representation, there may be too much datato display (e.g., 45,391 bins. When visualizing data, the resolution atwhich data may be usefully displayed may be determined. For example, ondisplays available today, humans cannot distinguish in excess of 1,000histogram bins without external apparatus. The technique described belowprovides a method of dynamic rebinning that may optimize the histogramfor visual delivery in linearly scaled representation where binsotherwise not visible on-display may be combined into a single bin.

In one embodiment, specific user-supplied minimum and maximum visuallimits may be provided. For example the number of pixels and size of adisplay may impact the visual limits. The greater of the absolute valueof the minimum and maximum visual limits is taken as the focal maximum.In one example, there may be 90 bins like [1.0,1.1), [1.1,1.2), . . .[9.9,10) each of which times 10{circumflex over ( )}n. The logarithmicbin set (e.g., the 90 bins for a particular value of n) containing thefocal maximum is preserved (e.g., unchanged, these bins will not becombined with other bins for efficiency). Smaller logarithmic bin sets(e.g., logarithmic bins of 10{circumflex over ( )}x (where x<n from thepreserved set)) may be preserved until the total number of bins meets orexceeds the available vertical visual space (e.g., with 90 bins in eachlogarithmic set and if a set and the surrounding sets are preserved, 270bins may be created) and the smallest logarithmic bin set (e.g., basedon the number of vertical pixels available, the smallest bin with asample in it, or a user-supplied minimum) is taken as the focal minimum.If minimum<=0<=maximum, a special 0 bin is preserved. EXAMPLE: Given adata set: 0.02, 0.04, 1.8, 11, 76, 873, we would represent this in alog-linear histogram as one sample in each of the following buckets:[0.02,0.03), [0.04,0.05), [1.8,1.9), [11,12), [76,77), and [870,880).The focal maximum of the data set is 880 (the top of the largest bin). Auser-supplied maximum may override this, let us assume a user-suppliedfocal maximum of 100. Assuming a vertical space of 1000 pixels, we candisplay the bins [11,12) and [76,77) in 10 pixels of vertical space each(bins [10,11) through [99,100) consuming 900 pixels of vertical spacetotal). This leaves 100 pixels for bins less than 10. Bins [1.0,1.1)through [9.9,10), consume one pixel of vertical space each totally 90pixels. This leave 10 pixels to represent all smaller bins. Accordingly,each of the bins [0.02,0.03) through [0.99,1.0) would be assigned 0.1pixels which is not possible visualize setting our focal minimum to 1.0.Accordingly, we will combine all bins between [0.2,1.0), into a singlebin containing the sum of all contained samples and display it as asingle bin.

FIG. 7 depicts an example flowchart describing processing performed inan illustrative embodiment of the present invention. In 710, a data setmay be received or accessed. From 710, flow may move to 720.

In 720, minimum and maximum visual limits may be received. The focalmaximum may be determined from the larger of the absolute value ofminimum visual limit or maximum visual limit. From 720, flow may move to730.

In 730, a determination may be made if data minimum (e.g., the smallestvalue in a data set) is greater than 0. If so, a new bin may be createdusing [data minimum, focal minimum) and the covered bins may bediscarded as in step 780. A new bin may be created and all data in binsbetween [data minimum, focal minimum) may be placed in the newly createdbin. For example, a new bin may be created using (10*focal maximum, datamaximum) and the covered bins may be discarded as in step 780. From 730,flow may move to 740.

In 740, a determination may be made if data maximum is less than 0. Ifso, a new bin may be created using (−1*focal minimum, data maximum) andthe covered bins may be discarded as in step 780, and a new bin may becreated using (data minimum, −10* focal maximum) and the covered binsmay be discarded as in step 780. From 740, flow may move to 750.

In 750, a determination may be made if data minimum is less than orequal to 0 and data minimum is greater than or equal to −1*focalminimum. If so, (1) the 0 bin is preserved, (2) a new bin may be createdusing (data minimum, 0) and the covered bins may be discarded as in step780, (3) a new bin may be created using (0, focal minimum) and thecovered bins may be discarded as in step 780, and (4) a new bin may becreated using (10*focal maximum , data maximum) and the covered bins maybe discarded as in step 780. From 750, flow may move to 760.

In 760, a determination may be made if data maximum is less than orequal to focal minimum and data maximum is greater than or equal 0. Ifso, (1) the 0 bin is preserved, (2) a new bin may be created using (0,data maximum) and the covered bins may be discarded as in step 780, (3)a new bin may be created using (−1*focal minimum, 0) and the coveredbins may be discarded as in step 780, and (4) a new bin may be createdusing (data minimum, −10*focal maximum) and the covered bins may bediscarded as in step 780. From 760, flow may move to 770.

In 770, if none of the determinations of 730, 740, 750, or 760 apply,then (1) the 0 bin is preserved, (2) a new bin may be created using(−1*focal minimum, 0) and the covered bins may be discarded as in step780, (3) a new bin may be created using (data minimum, −10*focalmaximum) and the covered bins may be discarded as in step 780, (4) a newbin may be created using (0, focal minimum) and the covered bins may bediscarded as in step 780, and (5) a new bin may be created using(10*focal maximum, data maximum). From 770, flow may end. Note, each ofthe determinations of 730, 740, 750, and 760 may be exclusive.

In one embodiment, the stored histograms may be reevaluated over timefor minimum and maximum values. These minimum and maximum values may beused as if they were supplied as described above in 720. For example, ifuser or viewer selected limits were not received, the minimum andmaximum values may be calculated from the dataset itself

FIG. 8 depicts an example computer system that may be used inimplementing an illustrative embodiment of the present invention.Specifically, FIG. 8 depicts an illustrative embodiment of a computersystem 800 that may be used in computing devices such as, e.g., but notlimited to, standalone, client, server devices, or system controllers.FIG. 8 depicts an illustrative embodiment of a computer system that maybe used as client device, a server device, a controller, etc. Thepresent invention (or any part(s) or function(s) thereof) may beimplemented using hardware, software, firmware, or a combination thereofand may be implemented in one or more computer systems or otherprocessing systems. In fact, in one illustrative embodiment, theinvention may be directed toward one or more computer systems capable ofcarrying out the functionality described herein. An example of acomputer system 800 is shown in FIG. 8, depicting an illustrativeembodiment of a block diagram of an illustrative computer system usefulfor implementing the present invention. Specifically, FIG. 8 illustratesan example computer 800, which in an illustrative embodiment may be,e.g., (but not limited to) a personal computer (PC) system running anoperating system such as, e.g., (but not limited to) MICROSOFT® WINDOWS®NT/98/2000/XP/Vista/Windows 7/Windows 8, etc. available from MICROSOFT®Corporation of Redmond, Wash., U.S.A. or an Apple computer executingMAC® OS or iOS from Apple® of Cupertine, Calif., U.S.A or a smartphonerunning iOS, Android, or Windows mobile, for example. However, theinvention is not limited to these platforms. Instead, the invention maybe implemented on any appropriate computer system running anyappropriate operating system. In one illustrative embodiment, thepresent invention may be implemented on a computer system operating asdiscussed herein. An illustrative computer system, computer 800 is shownin FIG. 8. Other components of the invention, such as, e.g., (but notlimited to) a computing device, a communications device, a telephone, apersonal digital assistant (PDA), an iPhone, a 3G/4G wireless device, awireless device, a personal computer (PC), a handheld PC, a laptopcomputer, a smart phone, a mobile device, a netbook, a handheld device,a portable device, an interactive television device (iTV), a digitalvideo recorder (DVR), client workstations, thin clients, thick clients,fat clients, proxy servers, network communication servers, remote accessdevices, client computers, server computers, peer-to-peer devices,routers, web servers, data, media, audio, video, telephony or streamingtechnology servers, etc., may also be implemented using a computer suchas that shown in FIG. 8. In an illustrative embodiment, services may beprovided on demand using, e.g., an interactive television device (iTV),a video on demand system (VOD), via a digital video recorder (DVR),and/or other on demand viewing system. Computer system 800 may be usedto implement the network and components as described above.

The computer system 800 may include one or more processors, such as,e.g., but not limited to, processor(s) 804. The processor(s) 804 may beconnected to a communication infrastructure 806 (e.g., but not limitedto, a communications bus, cross-over bar, interconnect, or network,etc.). Processor 804 may include any type of processor, microprocessor,or processing logic that may interpret and execute instructions (e.g.,for example, a field programmable gate array (FPGA)). Processor 804 maycomprise a single device (e.g., for example, a single core) and/or agroup of devices (e.g., multi-core). The processor 804 may include logicconfigured to execute computer-executable instructions configured toimplement one or more embodiments. The instructions may reside in mainmemory 808 or secondary memory 810. Processors 804 may also includemultiple independent cores, such as a dual-core processor or amulti-core processor. Processors 804 may also include one or moregraphics processing units (GPU) which may be in the form of a dedicatedgraphics card, an integrated graphics solution, and/or a hybrid graphicssolution. Various illustrative software embodiments may be described interms of this illustrative computer system. After reading thisdescription, it will become apparent to a person skilled in the relevantart(s) how to implement the invention and/or parts of the inventionusing other computer systems and/or architectures.

Computer system 800 may include a display interface 802 (e.g., the HMI)that may forward, e.g., but not limited to, graphics, text, and otherdata, etc., from the communication infrastructure 806 (or from a framebuffer, etc., not shown) for display on the display unit 801. Thedisplay unit 801 may be, for example, a television, a computer monitor,a touch sensitive display device, or a mobile phone screen. The outputmay also be provided as sound through a speaker.

The computer system 800 may also include, e.g., but is not limited to, amain memory 808, random access memory (RAM), and a secondary memory 810,etc. Main memory 808, random access memory (RAM), and a secondary memory810, etc., may be a computer-readable medium that may be configured tostore instructions configured to implement one or more embodiments andmay comprise a random-access memory (RAM) that may include RAM devices,such as Dynamic RAM (DRAM) devices, flash memory devices, Static RAM(SRAM) devices, etc.

The secondary memory 810 may include, for example, (but is not limitedto) a hard disk drive 812 and/or a removable storage drive 814,representing a floppy diskette drive, a magnetic tape drive, an opticaldisk drive, a compact disk drive CD-ROM, flash memory, etc. Theremovable storage drive 814 may, e.g., but is not limited to, read fromand/or write to a removable storage unit 818 in a well-known manner.Removable storage unit 818, also called a program storage device or acomputer program product, may represent, e.g., but is not limited to, afloppy disk, magnetic tape, optical disk, compact disk, etc. which maybe read from and written to removable storage drive 814. As will beappreciated, the removable storage unit 818 may include a computerusable storage medium having stored therein computer software and/ordata.

In alternative illustrative embodiments, secondary memory 810 mayinclude other similar devices for allowing computer programs or otherinstructions to be loaded into computer system 800. Such devices mayinclude, for example, a removable storage unit 822 and an interface 820.Examples of such may include a program cartridge and cartridge interface(such as, e.g., but not limited to, those found in video game devices),a removable memory chip (such as, e.g., but not limited to, an erasableprogrammable read only memory (EPROM), or programmable read only memory(PROM) and associated socket, and other removable storage units 822 andinterfaces 820, which may allow software and data to be transferred fromthe removable storage unit 822 to computer system 800.

Computer 800 may also include an input device 803 which may include anymechanism or combination of mechanisms that may permit information to beinput into computer system 800 from, e.g., a user or operator. Inputdevice 803 may include logic configured to receive information forcomputer system 800 from, e.g. a user or operator. Examples of inputdevice 803 may include, e.g., but not limited to, a mouse, pen-basedpointing device, or other pointing device such as a digitizer, a touchsensitive display device, and/or a keyboard or other data entry device(none of which are labeled). Other input devices 803 may include, e.g.,but not limited to, a biometric input device, a video source, an audiosource, a microphone, a web cam, a video camera, and/or other camera.

Computer 800 may also include output devices 815 which may include anymechanism or combination of mechanisms that may output information fromcomputer system 800. Output device 815 may include logic configured tooutput information from computer system 800. Embodiments of outputdevice 815 may include, e.g., but not limited to, display 801, anddisplay interface 802, including displays, printers, speakers, cathoderay tubes (CRTs), plasma displays, light-emitting diode (LED) displays,liquid crystal displays (LCDs), printers, vacuum florescent displays(VFDs), surface-conduction electron-emitter displays (SEDs), fieldemission displays (FEDs), etc. Computer 800 may include input/output(I/O) devices such as, e.g., (but not limited to) input device 803,communications interface 824, connection 828 and communications path826, etc. These devices may include, e.g., but are not limited to, anetwork interface card, onboard network interface components, and/ormodems.

Communications interface 824 may allow software and data to betransferred between computer system 800 and external devices or othercomputer systems. Computer system 800 may connect to other devices orcomputer systems via wired or wireless connections. Wireless connectionsmay include, for example, WiFi, satellite, mobile connections using, forexample, TCP/IP, 802.15.4, high rate WPAN, low rate WPAN, 6loWPAN,ISA100.11a, 802.11.1, WiFi, 3G, WiMAX, 4G and/or other communicationprotocols.

In this document, the terms “computer program medium” and “computerreadable medium” may be used to generally refer to media such as, e.g.,but not limited to, removable storage drive 814, a hard disk installedin hard disk drive 812, flash memories, removable discs, non-removablediscs, etc. In addition, it should be noted that various electromagneticradiation, such as wireless communication, electrical communicationcarried over an electrically conductive wire (e.g., but not limited totwisted pair, CAT5, etc.) or an optical medium (e.g., but not limitedto, optical fiber) and the like may be encoded to carrycomputer-executable instructions and/or computer data that embodimentsof the invention on e.g., a communication network. These computerprogram products may provide software to computer system 800. It shouldbe noted that a computer-readable medium that comprisescomputer-executable instructions for execution in a processor may beconfigured to store various embodiments of the present invention.References to “one embodiment,” “an embodiment,” “example embodiment,”“various embodiments,” etc., may indicate that the embodiment(s) of theinvention so described may include a particular feature, structure, orcharacteristic, but not every embodiment necessarily includes theparticular feature, structure, or characteristic.

Further, repeated use of the phrase “in one embodiment,” or “in anillustrative embodiment,” do not necessarily refer to the sameembodiment, although they may. The various embodiments described hereinmay be combined and/or features of the embodiments may be combined toform new embodiments.

Unless specifically stated otherwise, as apparent from the followingdiscussions, it is appreciated that throughout the specificationdiscussions utilizing terms such as “processing,” “computing,”“calculating, ” “determining,” or the like, refer to the action and/orprocesses of a computer or computing system, or similar electroniccomputing device, that manipulate and/or transform data represented asphysical, such as electronic, quantities within the computing system'sregisters and/or memories into other data similarly represented asphysical quantities within the computing system's memories, registers orother such information storage, transmission or display devices.

In a similar manner, the term “processor” may refer to any device orportion of a device that processes electronic data from registers and/ormemory to transform that electronic data into other electronic data thatmay be stored in registers and/or memory. A “computing platform” maycomprise one or more processors.

Embodiments of the present invention may include apparatuses forperforming the operations herein. An apparatus may be speciallyconstructed for the desired purposes, or it may comprise a generalpurpose device selectively activated or reconfigured by a program storedin the device.

Embodiments may be embodied in many different ways as a softwarecomponent.

For example, it may be a stand-alone software package, or it may be asoftware package incorporated as a “tool” in a larger software product,such as, for example, a scientific modeling product. It may bedownloadable from a network, for example, a website, as a stand-aloneproduct or as an add-in package for installation in an existing softwareapplication. It may also be available as a client-server softwareapplication, or as a web-enabled software application. It may also bepart of a system for efficient manipulation and display of histograms.Computer system 800 may be used to create a general purpose computer. Ageneral purpose computer may be specialized by storing programming logicthat enables one or more processors to perform the techniques indicatedherein and one or more of the steps of FIG. 6. Computer system 800 ormultiple embodiments of computer system 800 may be used to perform thefunctions described above.

Embodiments of the present invention may include apparatuses forperforming the operations herein. An apparatus may be speciallyconstructed for the desired purposes, or it may comprise a generalpurpose device selectively activated or reconfigured by a program storedin the device.

Embodiments of the present invention may improve the functioning ofcomputer system 800. For example, embodiments of the present inventionprocessing speed for creating and manipulating histograms.

Embodiments may be embodied in many different ways as a softwarecomponent.

For example, it may be a stand-alone software package, or it may be asoftware package incorporated as a “tool” in a larger software product.It may be downloadable from a network, for example, a website, as astand-alone product or as an add-in package for installation in anexisting software application. It may also be available as aclient-server software application, or as a web-enabled softwareapplication.

While various embodiments of the present invention have been describedabove, it should be understood that they have been presented by way ofexample only, and not limitation. Thus, the breadth and scope of thepresent invention should not be limited by any of the above-describedillustrative embodiments, but should instead be defined only inaccordance with the following claims and their equivalents. Theembodiments of the present invention that have been described above maycontain features that may be removed or combined between the describedembodiments to derive additional embodiments.

1-15. (canceled)
 16. A method for constructing histograms with a uniformbin scheme, the method comprising: receiving, by one or more processors,a first set of data values, wherein the first set of data values includea first type of measurement for a first time interval; creating, by theone or more processors, a first set of bins in memory to represent thefirst set of data values, wherein creating the first set of binscomprises assigning a first bin to represent any data value of zero inthe first set of data values, and assigning to each of the remainingbins in the first set of bins a respective range spanning two differentnumbers, such that the first bin represents the number zero, and theremaining bins represent non-zero numbers; generating, by the one ormore processors, a first histogram using the first set of bins and thefirst set of data values, wherein the first histogram indicates, foreach bin of the first set of bins, how many data values of the first setof data values are represented by the bin, and wherein the firsthistogram is for the first time interval; receiving, by the one or moreprocessors, a second set of data values, wherein the second set of datavalues include the first type of measurement for a second time interval;generating, by the one or more processors, a second histogram using thefirst set of bins and the second set of data values, such that the firsthistogram and the second histogram have a uniform bin scheme by usingthe same set of bins, wherein the second histogram indicates, for eachbin of the first set of bins, how many data values of the second set ofdata values are represented by the bin, wherein the second histogram isfor the second time interval; and generating a third histogram for athird time interval that covers the first time interval and the secondtime interval, wherein the third histogram is generated by also usingthe first set of bins, and by adding the first histogram and the secondhistogram on a bin-by-bin basis, wherein the third histogram indicates,for each bin of the first set of bins, how many data values of the firstset of data values and the second set of data values are represented bythe bin.
 17. The method of claim 16, wherein: the first time interval orsecond time interval is a 1 minute, 5 minutes, 1 hour, and 12 hour timeincrement.
 18. The method of claim 17, wherein data values are receivedeach minute; and each minute, a one-minute histogram is created, a fiveminute histogram is recalculated, a one-hour histogram is recalculated,and a twelve-hour histogram is recalculated.
 19. A non-transitorycomputer-readable medium comprising instructions, which when executed byone or more processors causes the one or more processors to performoperations for constructing histograms with a uniform bin scheme, thecomputer-readable medium comprising instructions to: receive a first setof data values, wherein the first set of data values include a firsttype of measurement for a first time interval; create a first set ofbins in memory to represent the first set of data values, wherein theinstructions cause the first set of bins to be created by assigning afirst bin to represent any data value of zero in the first set of datavalues, and assigning to each of the remaining bins in the first set ofbins a respective range spanning two different numbers, such that thefirst bin represents the number zero, and the remaining bins representnon-zero numbers; generate a first histogram using the first set of binsand the first set of data values, wherein the first histogram indicates,for each bin of the first set of bins, how many data values of the firstset of data values are represented by the bin, and wherein the firsthistogram is for the first time interval; receive a second set of datavalues, wherein the second set of data values include the first type ofmeasurement for a second time interval; generate, by the one or moreprocessors, a second histogram using the first set of bins and thesecond set of data values, such that the first histogram and the secondhistogram have a uniform bin scheme by using the same set of bins,wherein the second histogram indicates, for each bin of the first set ofbins, how many data values of the second set of data values arerepresented by the bin, and wherein the second histogram is for thesecond time interval; and generate a third histogram for a third timeinterval that covers the first time interval and the second timeinterval, wherein the third histogram is generated by also using thefirst set of bins, and by adding the first histogram and the secondhistogram on a bin-by-bin basis, wherein the third histogram indicates,for each bin of the first set of bins, how many data values of the firstset of data values and the second set of data values are represented bythe bin.
 20. A system for constructing histograms with a uniform binscheme, the system comprising: one or more processors for executing aplurality of instructions; a display device in communication with theone or more processors; and a storage device in communication with theone or more processors, the storage device holding the plurality ofinstructions, the plurality of instructions including instructions to:receive a first set of data values, wherein the first set of data valuesinclude a first type of measurement for a first time interval; create afirst set of bins in memory to represent the first set of data values byassigning a first bin to represent any data value of zero in the firstset of data values, and assigning to each of the remaining bins in thefirst set of bins a respective range spanning two different numbers,such that the first bin represents the number zero, and the remainingbins represent non-zero numbers; generate a first histogram using thefirst set of bins and the first set of data values, wherein the firsthistogram indicates, for each bin of the first set of bins, how manydata values of the first set of data values are represented by the bin,and wherein the first histogram is for the first time interval; receivea second set of data values, wherein the second set of data valuesinclude the first type of measurement for a second time interval;generate a second histogram using the first set of bins and the secondset of data values, such that the first histogram and the secondhistogram have a uniform bin scheme by using the same set of bins,wherein the second histogram indicates, for each bin of the first set ofbins, how many data values of the second set of data values arerepresented by the bin, and wherein the second histogram is for thesecond time interval; generate a third histogram for a third timeinterval that covers the first time interval and the second timeinterval, wherein the third histogram is generated by also using thefirst set of bins, and by adding the first histogram and the secondhistogram on a bin-by-bin basis, wherein the third histogram indicates,for each bin of the first set of bins, how many data values of the firstset of data values and the second set of data values are represented bythe bin; and display the third histogram via the display device.
 21. Thesystem of claim 20, wherein: the first time interval or second timeinterval is a 1 minute, 5 minutes, 1 hour, and 12 hour time increment.22. The system of claim 21, wherein data values are received eachminute; and each minute, a one-minute histogram is created, afive-minute histogram is recalculated, a one-hour histogram isrecalculated, and a twelve-hour histogram is recalculated.
 23. Themethod of claim 16, wherein each bin in the first set of bins has a binsize based on the respective range assigned to the bin.
 24. The methodof claim 16, wherein the respective ranges of the remaining bins of thefirst set of bins are represented by the same number of bits.
 25. Themethod of claim 16, wherein the first set of bins, other than the firstbin thereof, collectively represent a range from 1.0×10⁻¹²⁷ to9.9×10¹²⁸.
 26. The method of claim 16, wherein: the first set of bins,other than the first bin thereof, is a set of log-linear bins, whichinclude at least a first subset of bins and a second subset of bins, allbins of the first subset of bins represent respective portions of afirst range of numbers, and all have a first size, all bins of thesecond subset of bins represent respective portions of a second range ofnumbers adjacent to the first range, and all have a second size that isten times greater than the first size, the second range has a size thatten times greater than a size of the first range, such that the firstrange and the second range are represented by the same number of bins.27. The method of claim 26, wherein a minimum value of the data valuesof the third histogram is greater than zero, the method furthercomprising: receiving a minimum visual limit for displaying the thirdhistogram, the minimum visual limit being greater than the minimum valueof the data values of the third histogram; modifying the third histogramby combining, into a single bin, all bins of the first set of bins thatare covered by a range between the minimum value and the minimum visuallimit, and further by discarding all of the bins covered by the range,wherein the single bin has a data value that is a sum of the respectivedata values of the combined bins; and displaying the modified thirdhistogram on a display device.
 28. The method of claim 27, wherein anumber of pixels of the display device assigned to display each of thesecond subset of bins is ten times a number of pixels of the displaydevice assigned to display each of the first subset of bins.
 29. Themethod of claim 16, wherein the first set of data values and the secondset of data values are two-dimensional or three-dimensional data values,the method further comprising displaying the first histogram, the secondhistogram, or the third histogram by using color to display onedimension of the two-dimensional or three-dimensional data values.